package com.bjbn.scheduler;

import com.bjbn.service.FidsT3DeviceService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * T3航显屏定时任务调度器
 */
@Slf4j
@Component
public class FidsT3Scheduler {

    @Autowired
    private FidsT3DeviceService deviceService;

    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    /**
     * 应用启动时立即执行一次设备列表同步
     */
    @PostConstruct
    public void initDeviceList() {
        try {
            log.info("应用启动，初始化同步航显屏设备列表...");
            deviceService.syncDeviceList();
        } catch (Exception e) {
            log.error("初始化设备列表失败", e);
        }
    }

    /**
     * 每天晚上12点定时同步航显屏设备列表
     */
    @Scheduled(cron = "0 0 0 * * ?") // 每天0点执行
    public void syncDeviceListTask() {
        log.info("定时任务开始同步航显屏设备列表，时间: {}", dateFormat.format(new Date()));
        try {
            deviceService.syncDeviceList();
        } catch (Exception e) {
            log.error("同步设备列表定时任务异常", e);
        } finally {
            log.info("同步航显屏设备列表定时任务结束，时间: {}", dateFormat.format(new Date()));
        }
    }

    /**
     * 每5分钟执行一次批量截图任务
     */
    @Scheduled(cron = "0 */5 * * * ?") // 每5分钟执行一次
    public void batchScreenshotTask() {
        log.info("定时任务开始批量截图，时间: {}", dateFormat.format(new Date()));
        try {
            deviceService.batchCaptureScreens();
        } catch (Exception e) {
            log.error("批量截图定时任务异常", e);
        } finally {
            log.info("批量截图定时任务结束，时间: {}", dateFormat.format(new Date()));
        }
    }

}